Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / ci / github-install-deps.sh

Displaying Raw • Download


scripts/ci/github-install-deps.sh dcfd93cebc63b0ff274d153dbfe187d086a69249 (dcfd93ce) Text, 2.38 KB

T8b949e#!/usr/bin/env bash
T8b949e# Install Python (Poetry) and Node (pnpm) dependencies for native Electron builds.
Tffa657set -euo pipefail

Te6edf3ROOTTff7b72=Ta5d6ff"Tff7b72$(Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/../..Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"
Tffa657cd Ta5d6ff"Te6edf3$ROOTTa5d6ff"

T8b949e# shellcheck source=scripts/ci/priv.sh
. Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/priv.shTa5d6ff"

Tffa657export Te6edf3GIT_TERMINAL_PROMPTTff7b72=T79c0ff0

Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Tff7b72$(uname -sTff7b72)Ta5d6ff" Tff7b72=Tff7b72= Ta5d6ff"Darwin" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
brew install codec2
Te6edf3_codec2_prefixTff7b72=Ta5d6ff"Tff7b72$(brew --prefix codec2Tff7b72)Ta5d6ff"
Tffa657export Te6edf3CPPFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3CPPFLAGSTff7b72:-Tffd700}Ta5d6ff -ITffd700${Te6edf3_codec2_prefixTffd700}Ta5d6ff/includeTa5d6ff"
Tffa657export Te6edf3LDFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3LDFLAGSTff7b72:-Tffd700}Ta5d6ff -LTffd700${Te6edf3_codec2_prefixTffd700}Ta5d6ff/libTa5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -d Ta5d6ff"Tffd700${Te6edf3_codec2_prefixTffd700}Ta5d6ff/lib/pkgconfigTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657export Te6edf3PKG_CONFIG_PATHTff7b72=Ta5d6ff"Tffd700${Te6edf3_codec2_prefixTffd700}Ta5d6ff/lib/pkgconfig:Tffd700${Te6edf3PKG_CONFIG_PATHTff7b72:-Tffd700}Ta5d6ff"
Tff7b72fi
Tff7b72fi

T8b949e# LXST/pyogg loads libopus (and libogg for Ogg muxing) at runtime. GitHub-hosted
T8b949e# Linux runners do not ship these by default, so backend Opus encode tests fail
T8b949e# with PyOggError until the shared libraries are present.
Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Tff7b72$(uname -sTff7b72)Ta5d6ff" Tff7b72=Tff7b72= Ta5d6ff"Linux" Tff7b72]Tff7b72] Tff7b72&& Tffa657command -v apt-get >/dev/null T79c0ff2>Tb4b4b4&T79c0ff1Tb4b4b4; Tff7b72then
run_priv apt-get update -y
run_priv apt-get install -y libopus0 libogg0
Tff7b72fi

python -m poetry check --lock
python -m poetry install --no-interaction --no-ansi
python -m poetry run python scripts/patch_lxst_pyogg_ogg_ctypes.py

T8b949e# Python 3.14 may install miniaudio from sdist; a mis-linked x86_64-only
T8b949e# _miniaudio.abi3.so in the arm64 cx_Freeze tree differs from the x64 slice and
T8b949e# breaks @electron/universal (lipo cannot merge two x86_64-only Mach-O files).
Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Tff7b72$(uname -sTff7b72)Ta5d6ff" Tff7b72=Tff7b72= Ta5d6ff"Darwin" Tff7b72&& Ta5d6ff"Tff7b72$(uname -mTff7b72)Ta5d6ff" Tff7b72=Tff7b72= Ta5d6ff"arm64" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72if ! poetry run python -c Ta5d6ff"
import importlib.util
import pathlib
import subprocess
import sys

spec = importlib.util.find_spec('miniaudio')
if not spec or not spec.origin:
sys.exit(0)
so = pathlib.Path(spec.origin).resolve().parent / '_miniaudio.abi3.so'
if not so.is_file():
sys.exit(0)
out = subprocess.check_output(['file', str(so)], text=True)
if 'x86_64' in out and 'arm64' not in out:
sys.exit(1)
sys.exit(0)
"Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Rebuilding miniaudio for arm64 (was x86_64-only)." >Tb4b4b4&T79c0ff2
Tff7b72(
Tffa657export Te6edf3ARCHFLAGSTff7b72=Ta5d6ff"-arch arm64"
Tffa657export Te6edf3CFLAGSTff7b72=Ta5d6ff"Ta5d6ff-arch arm64 Tffd700${Te6edf3CFLAGSTff7b72:-Tffd700}Ta5d6ff"
Tffa657export Te6edf3CXXFLAGSTff7b72=Ta5d6ff"Ta5d6ff-arch arm64 Tffd700${Te6edf3CXXFLAGSTff7b72:-Tffd700}Ta5d6ff"
poetry run python -m pip install --force-reinstall --no-cache-dir --no-binary miniaudio Ta5d6ff"miniaudio>=1.70,<2"
Tff7b72)
Tff7b72fi
Tff7b72fi

pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────